package com.test.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.Test;

import com.test.entity.Jobs;
import com.test.util.DbUtil;

/**
 * 职位持久化层：实现对JOBS表进行增、删、改、查的方法
 * 
 * @author 赵旭
 */
public class JobsDao {

	/**
	 * 返回JOBS表中所有的职位信息
	 * 
	 * @return 返回java.util.List类型的实例
	 * @throws ClassNotFoundException 数据库驱动加载失败
	 * @throws SQLException           查询失败
	 * @author 赵旭
	 */
	public List<Jobs> selectAll() throws ClassNotFoundException, SQLException {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 加载数据库驱动并获得数据库连接对象
			conn = DbUtil.getConnection();
			// 创建SELECT语句
			String sql = "select job_id,job_title from jobs order by job_id asc";
			// 获得准备语句对象,并设置准备语句对象将要执行的SELECT语句
			ps = conn.prepareStatement(sql);
			// 使用准备对象执行SELECT语句,并将查询结果存到结果集中
			rs = ps.executeQuery();
			// 关闭结果集之前,将结果集中的数据复制到List集合
			List<Jobs> list = new ArrayList<>();
			Jobs job = null;
			while (rs.next()) {
				job = new Jobs();
				job.setJobId(rs.getInt("job_id"));
				job.setJobTitle(rs.getString("job_title"));
				list.add(job);
			}
			// 返回List
			return list;
		} finally {
			// 关闭与数据库相关的对象
			DbUtil.close(rs, ps, conn);
		}
	}

	// JUnit测试
	@Test
	public void test() throws ClassNotFoundException, SQLException {
		List<Jobs> selectAll = this.selectAll();
		selectAll.forEach(t -> System.out.println(t));
	}
}
